﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using FirebirdSql.Data.FirebirdClient;
using ZedGraph;

namespace University
{
    public partial class VSUM : University.VNADZVUCHAJNI
    {
        string zahody;
        int node;
        Main mForm = new Main();
          string fild;
          List<string> sumVudatok = new List<string>();
          List<string> sumYear = new List<string>();
        public VSUM()
        {
            InitializeComponent();
        }
        public VSUM(string a, string p, string s, int t, string z, string r,string w)
            : base(a, p, s, t,z,r)
        {
          
            zahody = w;
            node=t;
            InitializeComponent();
            comboShow.Items.Add("Витрати на заходи");
        }

        public override void Show_charges(string data, string rik)
        {
            base.Show_charges(data, rik);
        }
        public override void Graph(ZedGraph.ZedGraphControl zg1, string title)
        {
            base.Graph(zg1, title);
        }
        public override void buttonShow_Click(object sender, EventArgs e)
        {
            comboRik.Text = System.DateTime.Today.Year.ToString();
            if (comboShow.Text == "Витрати на заходи")
                Show_charges(zahody, comboRik.Text);
            base.buttonShow_Click(sender, e);
        }
        public override void buttonSearch_Click(object sender, EventArgs e)
        {
            if (groupPeriod.Visible == false)
            { if (comboShow.Text == "Витрати на заходи")
                    Show_charges(zahody, comboRik.Text);}
            base.buttonSearch_Click(sender, e);
        }
        public override void buttonAdd_Click(object sender, EventArgs e)
        {
            if (comboShow.Text == "Витрати на заходи")
            {
                bool check = true;
                if ((comboEMonth.Text != "") && (textERik.Text != "") && (textEVutraty.Text != ""))
                {

                    if (zahody.Contains(comboEMonth.Text + " " + textERik.Text))
                        check = false;

                    if (check == true)
                    {

                        if (zahody != "")
                            fild = zahody + '\n' + comboEMonth.Text + " " + textERik.Text + " " + textEVutraty.Text;
                        else
                            fild = comboEMonth.Text + " " + textERik.Text + " " + textEVutraty.Text;


                        FbConnection con1 = new FbConnection(mForm.str);
                        con1.Open();

                        FbCommand sqlupdate = new FbCommand("UPDATE VPROFKOM SET ZAHODY=@ZAHODY WHERE UNIQUE_NO = @UNIQUE_NO", con1);
                        sqlupdate.Parameters.AddWithValue("UNIQUE_NO", node);
                        sqlupdate.Parameters.AddWithValue("ZAHODY", fild);
                        sqlupdate.ExecuteNonQuery();


                        FbCommand cmd = new FbCommand(@"SELECT * FROM VPROFKOM  where UNIQUE_NO=" + node, con1);
                        FbDataReader rdr = cmd.ExecuteReader();
                        rdr.Read();
                        zahody = rdr["ZAHODY"].ToString();
                        rdr.Close();
                        con1.Close();

                        Show_charges(zahody, comboRik.Text);

                        textERik.Clear();
                        textEVutraty.Clear();

                        groupAdd.Visible = false;
                        buttonEnter.Enabled = true;
                    }
                    else { MessageBox.Show("Дані за цей період вже введені!"); }
                }
                else
                { MessageBox.Show("Заповніть всі поля!"); }
            }
            else
            {
                base.buttonAdd_Click(sender, e);
            }
           
        }
        public override void Show_piriod()
        {
            if (comboShow.Text == "Витрати на заходи")
                Show_charges(zahody, comboRik.Text);
            base.Show_piriod();
        }
        public override void buttonPeriod_Click(object sender, EventArgs e)
        {
            if (comboShow.Text == "Витрати на заходи")
                Show_charges(zahody, comboRik.Text);
            base.buttonPeriod_Click(sender, e);
        }

        private void buttonSum_Click(object sender, EventArgs e)
        {
            sumYear.Clear();
            sumVudatok.Clear();

            if ((textBoxZ.Text != "") && (textBoxDo.Text != ""))
            {
                if (Convert.ToInt32(textBoxZ.Text) <= Convert.ToInt32(textBoxDo.Text))
                {
                    for (int i = Convert.ToInt32(textBoxZ.Text); i <= Convert.ToInt32(textBoxDo.Text); i++)
                    {
                        double temp=0;
                        Show_charges(zahody,i.ToString());
                        sumYear.Add(i.ToString());
                        for (int j = 0; j < vudatok.Count; j++)
                            temp += Convert.ToInt32(vudatok[j]);
                        sumVudatok.Add(temp.ToString());

                    }

                    textBoxDo.Text = "";
                    textBoxZ.Text = "";

                    zedGraphSum.GraphPane.CurveList.Clear();
                    zedGraphSum.GraphPane.GraphObjList.Clear();
                    GraphSum(zedGraphSum);
                }
                else
                { MessageBox.Show("Період введено неправильно!"); }
            }
            else
            { MessageBox.Show("Введіть період!"); }
        }
        public virtual void GraphSum(ZedGraphControl zg1)
        {
            
            GraphPane myPane;
            myPane = zg1.GraphPane;
            myPane.Title.Text = "Сумарні видатки на заходи за роки :";
            myPane.YAxis.Title.Text = "P,grn";
            string s = comboRik.Text;
            myPane.XAxis.Title.Text = "Роки " ;
            
            double[] a = new double[sumVudatok.Count];
            string[] b = new string[sumYear.Count];

            for (int i = 0; i < sumVudatok.Count; i++)
                a[i] = Convert.ToDouble(sumVudatok[i]);
            for (int i = 0; i < sumYear.Count; i++)
                b[i] = sumYear[i];

            BarItem curve = myPane.AddBar("Graphic", null, a, Color.Blue);
            curve.Label.IsVisible = false;
            myPane.XAxis.Type = AxisType.Text;
            myPane.XAxis.Scale.TextLabels = b;
            

            zg1.AxisChange();
            zg1.Invalidate();


        }

        private void button1_Click(object sender, EventArgs e)
        {
            sumYear.Clear();
            sumVudatok.Clear();

            if ((textBoxZ.Text != "") && (textBoxDo.Text != ""))
            {
                if (Convert.ToInt32(textBoxZ.Text) <= Convert.ToInt32(textBoxDo.Text))
                {
                    for (int i = Convert.ToInt32(textBoxZ.Text); i <= Convert.ToInt32(textBoxDo.Text); i++)
                    {
                        double temp = 0;
                        Show_charges(zahody, i.ToString());
                        sumYear.Add(i.ToString());
                        for (int j = 0; j < vudatok.Count; j++)
                            temp += Convert.ToInt32(vudatok[j]);
                        sumVudatok.Add(temp.ToString());

                    }

                    textBoxDo.Text = "";
                    textBoxZ.Text = "";

                    zedGraphSum.GraphPane.CurveList.Clear();
                    zedGraphSum.GraphPane.GraphObjList.Clear();
                    GraphSum(zedGraphSum);
                }
                else
                { MessageBox.Show("Період введено неправильно!"); }
            }
            else
            { MessageBox.Show("Введіть період!"); }
        }
        
    }
}
